Recommend future video recordings for users from audiovisual content

ABSTRACT

Embodiments are directed towards analyzing content, such as Timed Text data that separately accompanies program content, to detect a future program. When a future program is detected in the content, a tag or other data structure is generated with identifying information for the future program. The tag is stored and later used to schedule a recording for the future program. An electronic program guide may be analyzed based on the identifying information in the tag to determine if the future program has been added to the electronic program guide.

BACKGROUND

Technical Field

The present disclosure relates generally to recording audiovisualcontent for a user, and more particularly, but not exclusively, toutilizing future program information in a current program to schedule arecording for a future program.

Description of the Related Art

Over the past few years, set-top boxes have greatly improved thetelevision viewing experience for users. This improvement largely comesfrom the number of channels that are available to watch, the numberprograms that can be simultaneously recorded or watched, and the storagecapacity of the set-top box. However, when it comes to recording showsor programs, users are typically limited to recording programs that arelisted in an electronic program guide or setting up series recordings.To utilize these recording mechanisms users often have search for theparticular show they want to record in the hopes that it is in theelectronic program guide. If the program is not yet in the guide, thenthe user may be unable to schedule the recording. It is with respect tothese and other considerations that the embodiments herein have beenmade.

BRIEF SUMMARY

Briefly stated, embodiments are directed towards analyzing content, suchas Timed Text data that accompanies program content, to detect a futureprogram. A tag is generated for the future program and stored for use inlater scheduling a recording for the future program.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments are described with referenceto the following drawings. In the drawings, like reference numeralsrefer to like parts throughout the various figures unless otherwisespecified.

For a better understanding of the present invention, reference will bemade to the following Detailed Description, which is to be read inassociation with the accompanying drawings, the drawings include:

FIG. 1 illustrates a context diagram for providing audiovisual contentto a user in accordance with embodiments described herein;

FIG. 2 is a diagram of one non-limiting embodiment of a system fordisplaying program content and scheduling future recordings inaccordance with embodiments described herein;

FIG. 3 illustrates a logical flow diagram generally showing oneembodiment of an overview process for analyzing content to detect afuture program and scheduling a recording for the future program inaccordance with embodiments described herein;

FIG. 4 illustrates a logical flow diagram generally showing oneembodiment of a process for analyzing content and detecting a futureprogram in accordance with embodiments described herein;

FIG. 5 illustrates a logical flow diagram generally showing oneembodiment of a process for scheduling a recording of a future programin accordance with embodiments described herein;

FIG. 6 illustrates a logical flow diagram generally showing oneembodiment of a process for obtaining a future program from a non-linearcontent provider in accordance with embodiments described herein;

FIG. 7 illustrates a logical flow diagram generally showing analternative embodiment of a process for analyzing content to detect afuture program in accordance with embodiments described herein; and

FIG. 8 shows a system diagram that describes one implementation ofcomputing systems for implementing embodiments described herein.

DETAILED DESCRIPTION

FIG. 1 shows a context diagram of one embodiment for providingaudiovisual content to a user in accordance with embodiments describedherein. Example 100 includes content provider 104, information provider106, content distributor 102, communication networks 110, and userpremises 120.

Typically, content providers 104 generate, aggregate, and/or otherwiseprovide audiovisual content that is provided to one or more users.Sometimes, content providers are referred to as “channels.” Examples, ofcontent providers 104 may include, but are not limited to, film studios;television studios; network broadcasting companies; independent contentproducers, such as AMC, HBO, Showtime, or the like; or other entitiesthat provide content for user consumption. A content provider may alsoinclude individuals that capture personal or home videos and distributethese videos to others over various online media-sharing websites orother distribution mechanisms. The content provided by content providers104 may be referred to as the program content, which may include movies,sitcoms, reality shows, talk shows, game shows, documentaries,infomercials, news programs, sports programs, or the like. In thiscontext, program content may also include commercials or othertelevision advertisements. It should be noted that the commercials maybe added to the program content by the content providers 104 or thecontent distributor 102.

Information provider 106 may create and distribute data or otherinformation that describes or supports audiovisual content. Generally,this data is related to the program content provided by content provider104. For example, this data may include, for example, metadata, programname, closed-caption authoring and placement within the program content,timeslot data, pay-per-view and related data, or other information thatis associated with the program content. In some embodiments, a contentdistributor 102 may combine or otherwise associate the data frominformation provider 106 and the program content from content provider104, which may be referred to as the distributed content or moregenerally as content. However, other entities may also combine orotherwise associate the program content and other data together.

In various embodiments, content providers 104 or information provider106, or other entities, may add various additional information to theaudiovisual content prior to its distribution to users. This additionalinformation may include inserting or otherwise encapsulating metadatainto the program content data stream of the content, generating a TimedText data stream that is separate from the program-content data stream,etc. This resulting content can include the program content, metadata,Timed Text data, or other information.

Content distributor 102 may provide the content, whether obtained fromcontent provider 104 and/or the data from information provider 106, to auser through a variety of different distribution mechanisms. Forexample, in some embodiments, content distributor 102 may provide thecontent and data to a user's television receiver 122 directly throughcommunication network 110 on link 111. In other embodiments, the contentmay be sent through uplink 112, which goes to satellite 114 and back todownlink station 116 that may also include a head end (not shown). Thecontent is then sent to an individual television receiver 122 of auser/customer at user premises 120.

Communication network 110 may be configured to couple various computingdevices to transmit content/data from one or more devices to one or moreother devices. For example, communication network 110 may be theInternet, X.25 networks, or a series of smaller or private connectednetworks that carry the content. Communication network 110 may includeone or more wired or wireless networks.

Television receiver 122 may be a receiving device of the content fromcontent distributor 102. Examples of television receiver 122 mayinclude, but are not limited to, a set-top box, a cable connection box,a computer, or other content or television receivers. Televisionreceiver 122 may be configured to demultiplex the content and providethe program content or other information to a user's display device 124,such as a television, monitor, or other display device.

Although FIG. 1 illustrates the television receiver 122 providingcontent for display on a display device 124 located on the user premises120, embodiments are not so limited. In some other embodiments, thetelevision receiver 122 provides the content to a user's mobile device(not illustrated), such as a smartphone, tablet, or other computingdevice, that is at a remote location to the user premises 120.

Television receiver 122 analyzes the content, such as the Timed Textdata stream, for one or more future programs to schedule a recording forthe future programs, as described herein. The television receiver 122may automatically set a schedule to record a future program whendetected in the content. In other embodiments, the user may select toschedule the future program, such as by clicking a button on a remotecontrol within a period of time after the future program is detected,providing a notification or guide to the user where the user can modifythe recording settings, etc. In yet other embodiments, the televisionreceiver 122 may automatically set a reminder for the future programsuch that a notification is provided to the user at or before the airingof the future program.

In various embodiments, the television receiver 122 may send, viacommunication network 126, a message to a remote device 108 of the userindicating that the existence of a future program has been detected inthe content. The remote device 108 displays details of the futureprogram to the user, from which the user can modify recording settingsand select to schedule a recording for the future program. Or the usercan disregard the future program notice because they are uninterested inrecording the future program. The remote device 108 returns anothermessage to the television receiver 122 with an indication to record thefuture program, which may include one or more recording settings ormodified settings, or to disregard the future program. Remote device 108is a user computing device, and may be a mobile phone or smartphone, atablet computer, a laptop computer, a desktop computer, a televisionremote control, smartwatch, or other computing device of the user.

Communication network 126 may be configured to couple various computingdevices to transmit data or content from one or more devices to one ormore other devices, such as television receiver 122 sendingnotifications of a future program to remote device 108 and receivingrecording instructions back from the remote device 108. In someembodiments, communication network 126 may be included in communicationnetwork 110. And in other embodiments, communication network 126 may beseparate and/or distinct from communication network 110, and thenetworks may or may not have any direct communications between them. Forexample, communication network 110 may be the internet, andcommunication network 126 may be a personal area network via Bluetoothtechnology.

FIG. 2 is a diagram of one non-limiting embodiment of a system fordisplaying program content and scheduling future recordings inaccordance with embodiments described herein. System 200 includescontent distributor 102, television receiver 122, and display device124.

The content distributor 102 provides content 202 to the televisionreceiver 122, where it is received by tuner 204 of the televisionreceiver 122. It should be noted that the content may also be providedby some other entity that is not illustrated. In this example, thecontent includes two separate data streams being received by the tuner204, a program-content data stream 206 and a Timed Text data stream 208.The program-content data stream and the Timed Text data stream aresynchronized such that the Timed Text data in the Timed Text data streamcorresponds to the program content in the program-content data stream.The program-content data stream and the Timed Text data stream may bereceived simultaneously or may be received separately andre-synchronized by the television receiver 122.

The television receiver 122 provides the program content from theprogram-content data stream to the display device 124, where the displaydevice 124 displays program content 214.

As the content is being received by the television receiver 122 and theprogram content is being provided to the display device 124, thetelevision receiver 122 also analyzes the Timed Text data in the TimedText data stream to detect an indication of future programs 210. TheTimed Text data may include various different types of information thatcan be used to identify a future program to be received. In someembodiments, the Timed Text data may include a unique program identifierof a future program, such as a global unique identifier, a Tribune orGracenote identifier, or other content identifier used by a contentprovider or content distributor. In other embodiments, the Timed Textdata may include recording parameters, such as a time, date, and channelof the future program, or it may include other programming informationthat can identify the future program. However, embodiments are not solimited and other information may identify a future program, such asname or title of the program, a combination of actors' names, a categoryor sub-category of the future program, or the like, or some combinationof attributes thereof.

As mentioned above, the program-content data stream and the Timed Textdata stream are synchronized. In this way, the identifying informationof a future program is placed in the Timed Text data stream so that itcorresponds to some aspect of the program content that references thefuture program. For example, the identifying information for a futureprogram may be in the Timed Text data stream while a commercial for thefuture program is being shown in the program content. In anotherexample, the identifying information may correspond to spoken words bycommentators, actors, etc. For example, during a baseball game programin late July, the commentators may talk about a new show coming inSeptember. The identifying information for the new show is included inthe Timed Text data while the new show is being discussed.

In various embodiments, the identifying information may be removed fromthe Timed Text data when the reference in the program content ends, suchas, for example, when the commercial ends or when the commentators stoptalking about the new show. In other embodiments, the identifyinginformation may be included in the Timed Text data for a given amount oftime after the reference to the future program ends or for a givenamount of time independent of how long the future program is beingreferenced in the program content. For example, the identifyinginformation may be in the Timed Text data for 35 seconds after it isinitially discussed or shown in the program content.

Although FIG. 2 describes using identifying information in the TimedText data stream, embodiments are not so limited and other types of dataaccompanying the content may be analyzed for the identifying informationof a future program. The other types of data that also may be analyzedinclude, metadata encapsulated with the program content; closed captiondata, such as by scraping the closed-caption data for programinformation; video processing, such as character recognition techniquesto identify the future program's information when displayed; audioprocessing, such as voice recognition techniques to detect and identifythe future program's information when audibly discussed; etc.

When the existence of a future program is detected, the televisionreceiver 122 schedules a recording for the future program 212. Thetelevision receiver generates a tag, cookie, token, or other datastructure that stores information to identify the future program. Thisinformation may include programming parameters to record the futureprogram when it is received or an identifier to query an electronicprogram guide or other non-linear content provider information for thefuture program.

As described herein, the future program may be one that is weeks,months, or even years out and is not in a current electronic programguide. The tag is a placeholder that is used periodically to check theelectronic program guide to see if the guide has been updated to includethe future program. In some embodiments, the tag includes a uniqueidentifier or other identifying information, which is used to locate alisting of the future program in the electronic program guide.

When the future program is identified in the electronic program guide, arecording for the future program is scheduled and the future program isrecorded when received by the television receiver. In other embodiments,the tag may include information that tells the television receiver when,what channel, and how long to record the future program without the useof finding the future program in the electronic program guide. In thisway, the television receiver would still record the future program, evenif the future program is not added to the electronic program guide, orthe electronic program guide is unavailable.

In other embodiments, the information stored in the tag for the futureprogram may identify one or more non-linear content providers where thefuture program may be obtained. The tag is utilized to query non-linearcontent provider information for the future program, which may becurrently available from the non-linear content provider or may beavailable at a date in the future. When the future program is identifiedin the non-linear content provider information, the future program isrequested if currently available, or a recording for the future programis scheduled and the future program is requested and recorded whenavailable. In this way, the user can access and view non-linear contentwhen it is advertised or as soon as it is available after it isadvertised.

The operation of certain aspects will now be described with respect toFIGS. 3-5. In at least one of various embodiments, processes 300, 400,500, and 600 described in conjunction with FIGS. 3-6, respectively, maybe implemented by or executed on one or more computing devices, such astelevision receiver 122 in FIG. 1.

FIG. 3 illustrates a logical flow diagram generally showing oneembodiment of an overview process for analyzing content to detect afuture program and scheduling a recording for the future program.

Process 300 begins, after a start block, at block 302, where content isreceived by a television receiver. As mentioned above, the content mayinclude program content, Timed Text data, metadata inserted in theprogram content, closed-captioning data, etc.

Process 300 proceeds to block 304, where the content is analyzed forfuture programs. In various embodiments, the Timed Text data is examinedfor identifying information of a future program. As described herein,the identifying information may be a unique identifier of the futureprogram, recording parameters, name or title of the future program, acombination of actors' names, a category or sub-category of the futureprogram, or the like, or some combination thereof. Not all receivedaudiovisual programs will have Timed Text data, and other components orelements of the content may also be analyzed for the identifyinginformation of a future program. For example, the identifyinginformation may be extracted from metadata embedded with the programcontent; extracted from or observed in the program content using audioor video character recognition techniques, scrapped fromclosed-captioning data associated with the program content, etc.

Process 300 continues at decision block 306, where a determination ismade whether a future program is detected in the analyzed content. Invarious embodiments, the future program is detected when sufficientidentifying information is obtained or extracted from the content. Theidentifying information is sufficient when it includes a uniqueidentifier for the future program, other information that in combinationestablishes an identity of the future program, or the recordingparameters of the future program.

In some embodiments, the content may not include sufficient informationat that point to record the future program. For example, the content mayidentify the program name, but not the channel, date, or time. In someembodiments, the system stores the partial, non-sufficient futureprogram information for some timeframe to try and acquire additionalinformation about the future program. In such an embodiment, process 300may continuously receive additional content from one or more channelsand analyze the additional content for additional information for thatfuture program, which when combined with the previously obtained partialinformation is sufficient to identify the future program. In someembodiments, very basic information, such as the program title, may besufficient information if the television receiver can use theinformation, at block 310, to search the electronic program guide forprograms with that title.

If a future program is detected, process 300 flows to block 308;otherwise, process 300 loops to block 302 to continue to receiveadditional content.

At block 308, a tag or other data structure is generated and stored toschedule a recording for the detected future program. In variousembodiments, the tag includes the identifying information for the futureprogram. For example, a tag is generated to include a future program'sunique identifier that was extracted from the Timed Text data of thecontent. In another example, the tag includes a time, date, channel, andduration to record the future program. In some embodiments, theserecording parameters may be obtained from the analysis of the content.In other embodiments, the television receiver accesses a database thatmaintains the recording parameters for each of a plurality of differentprograms. In this example, the unique identifier is used to query thedatabase for the recording parameters, and the recording parameters arestored in the tag.

Process 300 continues next at block 310, where a recording for thefuture program is scheduled based on the stored tag. In variousembodiments, the information included in the tag is used to query anelectronic program guide to determine if a listing for the futureprogram has been added to the electronic program guide. This query maybe at predetermined periodic time intervals, such as at a same time eachday, or it may be performed when the electronic program guide isupdated, such as every time additional programs are added to the guide.When the future program is listed in the electronic program guide, arecording is scheduled and the future program is recorded when it isreceived by the television receiver. In yet other embodiments, thefuture program may be recorded based on the identifying information inthe tag without looking up the future program in the electronic programguide. Additional example embodiments of recording the future programfrom an electronic program guide based on the stored tag are describedin more detail below in conjunction with FIG. 5.

In other embodiments, the information included in the tag is used toquery other content delivery mechanisms to determine if the futureprogram is currently available or will become available. These othercontent delivery mechanisms may include linear or non-linear contentproviders. Linear content providers may include anytime or appointmentcontent providers. And non-linear content providers includevideo-on-demand, pay-per-view, internet websites, or other contentproviders that provide content when requested by the user. When thefuture program is available from the other content providers, the futureprogram may be requested and received from the provider or a recordingmay be scheduled for the future program with it becomes available.Additional example embodiments of obtaining the future program from anon-linear content provider based on the stored tag are described inmore detail below in conjunction with FIG. 6.

In yet other embodiments, the future program may not be recorded, but areminder notification may be provided to the user on display device 124or remote device 108. This notification lets the user know that apreviously detected future program is about to air or is now availablefor viewing. In some embodiments, the notification may include a link,pointer, or other mechanism for the user to quickly access the futureprogram. For example, the television receiver may provide a notificationto the user via an application executing on the user's smartphone. Thenotification may include a “watch now” button or a “record” button. Byactivating the “watch now” button, the smartphone sends a message to thetelevision receiver to being playing the future program, whether bychanging to the appropriate channel or obtaining the future program froman on-demand provider or other non-linear content provider. Similarly,by activating the “record now” button, the smartphone sends a message tothe television receiver to being recording the future program orscheduling a recording to occur when the future program airs. Othertypes of notifications may also be provided to the user based on the tagfor the detected future program.

After block 310, process 300 terminates or returns to a calling processto perform other actions.

It should be noted that blocks 302, 304, 306, and 308 may becontinuously performed as the content is received and future programsare detected in the content. In some embodiments, block 310 may beperformed as the content is received or asynchronous to the receipt ofthe content, such that it is performed at a later date after the contentis received and processed.

In other embodiments, process 300 may be implemented by a server of thecontent distributor 102, rather than on an individual televisionreceivers 122, which is described in more detail below in conjunctionwith FIG. 7. Briefly, however, the content distributor 102 may obtainuser-defined preferences for a plurality of users or may determineviewing preferences of users based on viewing histories. The contentdistributor 102 can analyze content provided by content providers 104 oradditional data provided by information providers 106, as describedherein, to detect future programs. Based on the user preferences, thecontent distributor 102 can notify the user of the future program. Ifthe user is interested in the future program, the content distributor102 generates a tag for the detected future program and provides it tothe television receiver of the user who is interested in the futureprogram. Each corresponding television receiver can store the tag andthen schedule the recording for the future program based on the tag, asdescribed elsewhere herein.

In this way, the content distributer 102 can predict which users willlike to record which future programs, and the user's television receiverdoes not need to use its own tuners to look for the future programs.Similarly, the content distributor can analyze each channel for futurecontent, whereas the television receiver is limited to the number oftuners it has available and to the channels that the user is watching orselected for monitoring.

FIG. 4 illustrates a logical flow diagram generally showing oneembodiment of a process for analyzing content and detecting a futureprogram in accordance with embodiments described herein.

Process 400 begins, after a start block, at block 402, where the contentis received. In various embodiments, block 402 employs embodiments ofblock 302 of FIG. 3 to receive content. As described elsewhere herein,the content may include a program-content data stream and a Timed Textdata stream.

Process 400 proceeds from block 402 to block 404 for the program-contentdata stream. At block 404, program content is obtained from theprogram-content data stream and provided to a display device for displayto a user. After block 404, process 400 loops to block 402 to receiveadditional content, such as a next packet, next frame, next block of theprogram-content data stream, etc.

As the program content is provided to the display device, process 400proceeds from block 402 to block 406 for the Timed Text data stream. Atblock 406, the Timed Text data in the Timed Text data stream is analyzedfor future programs. In various embodiments, the Timed Text data may bescraped for identifying information of a future program, as describedabove in conjunction with block 304 in FIG. 3. As described elsewhereherein, other components or elements of the content may also be analyzedfor future programs.

Process 400 proceeds to decision block 408, where a determination ismade whether a future program is detected in the Timed Text data. Invarious embodiments, decision block 408 may employ embodiments ofdecision block 306 of FIG. 3 to determine if a future program isdetected. If a future program is detected, process 400 proceeds to block410; otherwise, process 400 returns to block 402 to continue to receiveadditional content, e.g., next packet, next frame, next block of theprogram-content data stream, etc.

At block 410, a notification is provided to the user of the futureprogram. In some embodiments, the notification may be displayed on thesame display device that is displaying the program content at block 404,such as display device 124 in FIG. 1. In other embodiments, thenotification may be provided to a mobile device of the user, such asremote device 108 in FIG. 1. In some embodiments, the mobile device maydisplay notifications for one or a plurality of detected future programsto the user. The notification may identify the future program, such as atitle, date, time, channel, or other information about the futureprogram. In some embodiments, block 410 may be optional and may not beperformed, which may be selected by the user through pre-defined userpreferences.

In some embodiments, a plurality of detected future programs may bestored and provided to the user when requested. For example, as thecontent stream is being analyzed, and future programs are detected atblock 406, a list of suggested future recordings is stored andmaintained by the television receiver. The user can then access thislist by opening a “suggested recordings” screen on the television ortheir mobile device. From this list, the user can select which of thefuture programs to record, delete future programs that they are notinterested in, or do nothing such that they are deleted or selected torecord after a predetermined amount of time depending on userpreferences.

Process 400 continues at decision block 412, where a determination ismade whether the future program is to be recorded. In some embodiments,the future program is automatically set to be recorded. In otherembodiments, the future program is set to be recorded if it satisfiesuser-defined preferences. For example, user preferences may indicatethat only baseball-themed movies are to be automatically recorded. Ifthe future program is a movie about baseball, then it is set to berecorded; otherwise, the future program is not set to be recorded. Insome embodiments, categories, sub-categories, actors, directors, years,or other attributes of the future program may be used to determine ifthe future program satisfies the user-defined preferences.

In some other embodiments, a user may be given a predetermined amount oftime to acknowledge the future program and provide an indication toproceed with scheduling the recording. For example, the system maytemporarily store the identifying information for the future program fora predetermined amount of time. If no indication to record the futureprogram is received within the predetermined amount of time, then theidentifying information for the future program is discarded. Thepredetermined amount of time may be until a corresponding commercialends; until the future program is no longer being discussed or shown inthe program content; for a pre-set time, for example, one minute; for apre-set time after the commercial ends or the future program is nolonger being discussed or shown in the program content; or some othertime determined by the user.

In at least one embodiment, the user may utilize a remote control toprovide an indication to the television receiver that the useracknowledges the future program and that the future program is to berecorded. In one non-limiting example, assume a commercial is showingfor Program_A, which is not currently in the electronic program guide.The Timed Text data may include a unique identifier for Program_A whilethe commercial is airing. The unique identifier is extracted from theTimed Text data and temporarily stored. If the user clicks twice on arecord button on the remote control while the commercial is stillairing, then the future program is to be recorded, otherwise, the storedunique identifier for Program_A is deleted.

In another embodiment, the user may utilize a mobile device, such as asmart phone or tablet, to provide a message or other notification to thetelevision receiver indicating that the future program is to berecorded. For example, the user may utilize an application executing onthe mobile device to view future programs detected by the televisionreceiver, where notifications of the future programs are provided to themobile device at block 410. In this example, the application may displaynotifications for a plurality of future programs for the predeterminedamount of time or until a user deletes the notifications. The user canclick on a button in the application, and the mobile device sendsanother notification back to the television receiver to record ordisregard one or more of the future programs.

In some embodiments, the user also may be enabled to modify one or morerecording parameters of the future program. These modifications may beprovided through the mobile device of the user or by the usermanipulating a user interface on the display device displaying theprogram content. In one non-limiting example, the user can select tostart the recording of the future program two minutes early and end therecording two minutes late. Any changes in the recording parameters maybe stored in the tag at block 414, such that when the future program isadded to the electronic program guide, the recording can beappropriately scheduled and recorded based on the modified recordingparameters.

It should be noted that the way in which the user provides an indicationto record the future program, how long the user has to provide theindication, etc. may be selected by the user through pre-defined userpreferences.

If the detected future program is to be recorded, then process 400proceeds to block 414; otherwise, process 400 loops to block 402.

At block 414, a tag to schedule the recording of the future program isgenerated and stored. In various embodiments, block 414 employsembodiments of block 308 in FIG. 3 to generate and store the tag.

After block 414, process 400 loops to block 402 to process additionalportions of the incoming content. As discussed above, the content may beprocessed as it is received. In various embodiments, the program-contentdata stream path and the Timed Text data stream path are synchronized inaccordance with the relationship between the program-content data streamand the Timed Text data stream.

Although process 400 is described as providing program content to adisplay device for display to a user and simultaneously analyzing theTimed Text data for future programs, embodiments are not limited to auser having to watch the program content for the system to detect futureprograms. In some embodiments, the user may select one or more channelsas channels to search for future programs, regardless of whether theuser is viewing those channels or not. Separate tuners may be utilizedto receive the program-connect data stream from each of these selectedchannels. Embodiments described herein are employed on each separateTimed Text data stream for corresponding program content for eachselected channel. In this way, a list of suggested future recordings canbe created while the user is watching another channel or not watchingtelevision at all. The user can then view the list of suggested futureprograms at block 410 and select which of those future programs torecord.

FIG. 5 illustrates a logical flow diagram generally showing oneembodiment of a process for scheduling a recording of a future programin accordance with embodiments described herein.

Process 500 begins, after a start block, at block 502, where anelectronic program guide is analyzed for the future program based oninformation stored in a tag for the future program. In variousembodiments, a unique identifier, name, time and date, or otheridentifying information may be used to query the electronic programguide for the future program. As mentioned above, the electronic programguide may be queried when it is updated or at predetermined times.

Process 500 proceeds to decision block 504, where a determination ismade whether the future program is listed in the electronic programguide. If the future program is listed in the electronic program guide,then process 500 flows to block 508; otherwise, process 500 flows toblock 506.

At block 506, when the future program is not listed in the electronicprogram guide, process 500 waits to recheck or reanalyze the electronicprogram guide for the future program at block 502. It should be notedthat the television receiver may perform other actions and operationswhile waiting to recheck the electronic program guide.

If the future program is listed in the electronic program guide, thenprocess 500 flows from decision block 504 to block 508. At block 508, arecording is scheduled for the future program. In at least oneembodiment, the future program may be added to a list of programs in theelectronic program guide to record. And, at block 510, the program isrecorded based on the scheduled recording.

After block 510, process 500 terminates or returns to a calling processto perform other actions.

One or more particular examples in which some of the describedembodiments can be used may be helpful. Assume that during the summer, aparticular broadcast network wants to advertise the new lineup of showsthat it will have starting in the fall, such as in September. During thesummer months, when baseball is often watched, the content provider maydecide to run advertisements for the fall lineup of shows. For thisexample, an advertisement is run between innings of a July baseball gameannouncing a brand new show coming in the fall.

In this instance, the advertisement may describe the new show andindicate that its first episode will be showing in mid-September. It isvery possible that the exact timeslot and starting date for the new showare not known. The actual start date may be September 13, September 27,or some other date, which may be fully confirmed and set by the contentprovider at a later date, such as in August.

The advertisement may have sparked a high interest in the viewer torecord the show. But since the viewer does not know when the show willbe aired, they are not capable at that time of setting a recording forit. Further, since the show does not air until some known or unknowndate in the future, the user may forget the desire to record the show orthey may not be present on the day when the first show is finallybroadcast, since that time and date may not be known at the time theuser sees the advertisement. So as the viewer is watching theadvertisement, they want to be sure to get a recording of the programeven if they are not available to view the program when it is firstbroadcast.

Since, at the time of the advertisement, the new show has been fullyfilmed, stored, and is ready to be communicated over a network orsatellite at the proper time, a great number of details about the showcan be used as identification information for the future program. Forexample, the new show may have been already assigned a unique programidentifier, a title, a channel, or other identification information. Theidentification information can be included in the metadata of theadvertisement, the Timed Text data stream associated with theadvertisement, or other storage location.

As the advertisement is being received by the television receiver, thereceiver analyzes the content associated with the advertisement. Whenthe receiver recognizes that the content includes data that identifiesspecific information about a future program, it can examine thatinformation and store the information or other associated information ina memory. The receiver then can output a signal to be shown on a displaydevice, such as a television, asking the user if they want to recordthis brand new show when it first shows in September. Alternatively, thereceiver sends a message to a remote device of the user, such as theuser's smartphone, notifying the user of the new show, or no message isshown to the user at all.

During the advertisement, or for some time thereafter, the user mayindicate yes, they would like to set a recording for that future show,even though the time and date of the actual future show are not known.And in fact, in this example, those details cannot be known since thetime and date are not yet available. The user indicates that they wouldlike to record the new show that is coming in mid-September, such as byclicking a designated button on their television remote control orthrough an application executing on their smartphone. Alternatively, theuser may set up preferences to indicate automatically that they wouldlike to record certain types of shows such that the user does not haveto indicate manually that they would like to record the new show.

When the user selects to record the program, a tag is generated andstored to look for the future program. Even though in this example, thetime and date of the show were not obtained from the advertisement, theshow's title and channel may be sufficient information to generate thetag to record the program. If the obtained information was notsufficient, the receiver can continuously analyze received content onthe same channel as the advertisement or other channels to gatheradditional information until sufficient information is obtained togenerate and store the tag to look for the future program. Goingforward, the receiver analyzes the electronic program guide to determinewhether or not the tagged future program has been listed on theelectronic program guide. Normally, an electronic program guide only hasdata available or stored in the receiver for approximately the next14-21 days past the current date. But in this instance, the future showis one that is so far in the future that it is beyond the date of anyprograms included in the electronic program guide. Accordingly, thereceiver does not have any details stored in the current electronicprogram guide for the new show, and it is not possible for the receiverto set a solid recording date at that time.

From time to time, the receiver will receive or download an updatedelectronic program guide from the content distributor. The receiver maydownload the next day or next week of programs as listed in theelectronic program guide in order to update the electronic programguide. This download may happen once a day, once every few days, or insome situations, once a week. Since this may be a data-intensivedownload, with detailed information of many programs, it usually occursin the middle of the night, such as 2:00 a.m.

As the electronic program guide is updated, the receiver can examine theelectronic program guide to determine whether or not any of the tags itcurrently has stored have programs that are in the electronic programguide. The examining of the electronic program guide can occurimmediately after being updated or periodically, such as once every dayor once every three or four days. Furthermore, the examining of theelectronic program guide can occur offline and at a different time thanwhen the receiver is actually displaying content on the display devicefor the user. For example, each night at a time when the user is likelynot watching the display, such as 3:00 a.m., the receiver can analyzethe electronic program guide to determine whether or not the futureprogram has become listed. Similarly, the receiver can analyze theelectronic program guide at any time during the day when the systemresources are otherwise not in use or there are sufficient availableresources to analyze the electronic program guide.

Once the future program is listed in the electronic program guide, atypical program recording is set, and the receiver records the futureprogram when it is received. In this example, since the exact day andtime of the new show were unknown when the advertisement was aired, thereceiver will still schedule the recording of the program when it isadded to the electronic program guide. This is because the receiver canuse the tag identifying information obtained from the advertisement,such as the unique program identifier, to locate the show in theelectronic program guide. If the day, time, and channel of the futureprogram are known from the advertisement, then the recording may be setat any time or when the electronic program guide includes a listing forthat day and time, regardless of whether the electronic program guidespecifically lists the program. In this way, the receiver will stillrecord the program even if an updated electronic program is unavailable.

The example just provided is one in which an advertisement is displayedfor a particular show, such as a fall show being advertised in mid-Julyduring a popular program. In other situations, the program contentitself may contain information about a future program. For example, inOctober a series, such as a late night talk show, a host may talk abouthaving a Christmas special that is to be shown in the coming weeks. Thisdiscussion is within the audiovisual content itself and is part of thereceived program content, not a separate advertisement. The programcontent may contain metadata, time-text data stream, or other indicationthat the current program is announcing a particular special program,such as the Christmas special. The system, following embodimentsdescribed herein, may generate a tag and carry out the recording basedon user preferences or by generating a notice to the user and receivingindication from the user of a desire to record the new show.Alternatively, if the user does not indicate an interest in recordingthe new show, it need not generate the tag nor store the tag. It shouldbe noted that the programming content can be continuously analyzed forfuture programs.

FIG. 6 illustrates a logical flow diagram generally showing oneembodiment of a process for obtaining a future program from a non-linearcontent provider in accordance with embodiments described herein.

Process 600 begins, after a start block, at block 602, wherenon-linear-content-provider information is analyzed for the futureprogram based on information stored in a tag for the future program. Thenon-linear-content-provider information may include, but is not limitedto, video-on-demand libraries, pay-per-view listings, a directory for awebsite associated with a future program, or other content informationfrom other content providers.

In some embodiments, the information stored in the future program tagidentifies a particular non-linear-content provider from which toanalyze their information for the future program. For example, assume acommercial advertises a new video that is currently available on-demandor will be soon available on-demand. The system can detect this futureprogram by employing embodiments described herein, such as with process400 of FIG. 4, and generate a tag that identifies the future program andthe non-linear-content-provider that is providing the future program.

In various embodiments, a unique identifier, name, time and date, orother identifying information may be used to query thenon-linear-content-provider information for the future program. Thenon-linear-content-provider information may be queried automaticallywhen the tag is generated, at predetermined times, or when thenon-linear-content-provider information is updated.

Process 600 proceeds to decision block 604, where a determination ismade whether the future program is listed in thenon-linear-content-provider information. If the future program is listedin the non-linear-content-provider information, then process 600 flowsto block 608; otherwise, process 600 flows to block 606.

At block 606, when the future program is not listed in thenon-linear-content-provider information, process 600 waits to recheck orreanalyze the non-linear-content-provider information for the futureprogram at block 602. It should be noted that the television receivermay perform other actions and operations while waiting to recheck thenon-linear-content-provider information.

If the future program is listed in the non-linear-content-providerinformation, then process 600 flows from decision block 604 to block608. At block 608, the future program is obtained from thenon-linear-content provider. In some embodiments, a recording isscheduled for the future program, and the future program is recordedwhen it is available from the non-linear-content provider. In otherembodiments, the future program may already be available from thenon-linear-content provider, and the television receiver requests thefuture program from the provider.

After block 608, process 600 terminates or returns to a calling processto perform other actions.

The operation of certain aspects will now be described with respect toFIG. 7. In at least one of various embodiments, process 700 may beimplemented by or executed on one or more computing devices, such ascontent distributor 102 in FIG. 1.

FIG. 7 illustrates a logical flow diagram generally showing analternative embodiment of a process for analyzing content to detect afuture program in accordance with embodiments described herein. Process700 begins, after a start block, at block 702, where user preferencesare received by a content distributor for a plurality of differentusers. For example, the user may utilize an application on their remotedevice 108 to indicate content categories, actors, sports, or otherpreferences for content they enjoy watching. The content distributor mayalso employ various predicative algorithms and analytics to determinethe preferences of the user based on demographic information of theuser, viewing history of the user, or other user-related viewinginformation.

Process 700 proceeds to block 704, where content is received by acontent distributor 102. As mentioned above, the content may includeprogram content, Timed Text data, metadata inserted in the programcontent, closed-captioning data, etc., which may come from a pluralityof content providers 104 or a plurality of information providers 106, orboth. In various embodiments, the content from a plurality of differentchannels is simultaneously received and analyzed by the contentdistributor.

Other embodiments described herein utilize a television receiver toreceive and analyze the content, rather than the content distributor.But the television receiver may be limited in the number of differentchannels that it can receive and analyze. In some instances, thetelevision receiver can only monitor the same number of channels as ithas tuners. As described above, the user may select which channels tomonitor. But if there is a future program mentioned in the content ofanother channel that is not being monitored, then the future programwill go undetected, and the user may miss out on being notified of thefuture program or scheduling a recording for that program.

Since the content distributor is not limited to a small number oftuners, it can dedicate numerous computing resources to monitor thecontent of each of a plurality of channels that it distributes to itsusers.

Process 700 proceeds to block 706, where the content is analyzed forfuture programs. In various embodiments, block 706 employs embodimentsof block 304 of FIG. 3 to analyze the received content. The content fromeach of a plurality of channels is analyzed for identifying informationof future programs.

Process 700 continues at decision block 708, where a determination ismade whether a future program is detected in the analyzed content. Invarious embodiments, decision block 708 may employ embodiments ofdecision block 306 of FIG. 3 to determine if a future program isdetected, such as when sufficient identifying information is obtained orextracted from the content. In some embodiments, the content distributorstores any partial, non-sufficient future program information for sometimeframe to try and acquire additional information about the futureprogram. In such an embodiment, process 700 may continuously receiveadditional content and analyze the additional content for additionalinformation for that future program, which when combined with thepreviously obtained partial information is sufficient to identify thefuture program. If a future program is detected, process 700 flows toblock 710; otherwise, process 700 loops to block 704 to continue toreceive additional content.

At block 710, a tag or other data structure is generated to schedule arecording for the detected future program. In various embodiments, block710 may employ embodiments of block 308 of FIG. 3 to generate a tag forthe future program, but where the content distributor is generating thetag, rather than the television receiver.

Process 700 proceeds next to block 712, where one or more users areselected from a plurality of users based on each user's preferences. Forexample, if a user's preferences indicate that they would like to recordJames Bond movies and the content distributor detects an upcoming JamesBond marathon at block 708, then that user is selected. But other userswhose preferences indicate that they are uninterested in James Bond arenot selected. A variety of different matching techniques may be utilizedto compare one or more attributes of the future program, such as contentcategory, theme, characters, actors, channel, etc., with each users'preferences.

Process 700 continues at block 714, where the content distributorprovides the tag to the selected users so that the correspondingtelevision receivers of the selected users can store the tag andschedule a recording for the future program based on the tag, such asdescribed above in conjunction with block 310 of FIG. 3 and elsewhereherein.

In some embodiments, the tag may be provided directly to the televisionreceiver so that the television receiver stores and uses the tag toschedule a recording of the future program, as described herein. In someembodiments, the user may be notified that the television receiver hasreceived a tag for a future program. The user may view the notificationvia the display device 124 that is connected to the television receiver.The user may utilize a remote control to provide an indication to thetelevision receiver whether the television receiver should maintain thetag and record the future program, or delete the tag and not record thefuture program.

In other embodiments, a notification with the tag may be provided to amobile device of the user, such as remote device 108. In someembodiments, the mobile device may display notifications for one or aplurality of detected future programs to the user. For example, the usermay utilize an application executing on the mobile device to view futureprograms detected by the content distributor. The application maydisplay notifications for one or a plurality of future programs for apredetermined amount of time or until the user deletes thenotifications. The user can click on a button in the application, andthe mobile device sends, e.g., via Bluetooth or some other suitablecommunication network, a message along with the tag to the televisionreceiver of the user. The television receiver stores and uses the tag toschedule a recording of the future program, as described herein.

In some embodiments, the content distributor may store a list ofpossible future programs for each separate user before providing thetags or notifications to each user. In this way, a user may receive asingle notification each day with tags for multiple future programs,rather than multiple different notifications throughout the day.Similarly, the content distributor may remove redundant future programsfrom the list before providing the tags to the user. Future programs maybe redundant if it is detected multiple times before the tag is providedto the user, or a tag for the same future program was previously sent tothe user. In some embodiments, a tag may be resent to the user to updatea currently stored tag on the television receiver, such as if additionalprogramming information or identification information becomes availablethrough additional detections of the future program.

After block 714, process 700 terminates or returns to a calling processto perform other actions.

As described elsewhere herein, each corresponding television receiverutilizes the tags it receives, just as if the television receiverdetected the future program rather than the content distributor, toschedule a recording for the future program, query other contentdelivery mechanisms to determine if the future program is currentlyavailable or will become available, or provide a reminder notificationof the future program to the user on display device 124 or remote device108.

FIG. 8 shows a system diagram that describes one implementation ofcomputing systems for implementing embodiments described herein. System800 includes television receiver 122, content distributor 102, contentprovider 104, and information provider 106.

Television receiver 122 receives content from content distributor 102and analyzes the content to detect future programs based on informationassociated with the content and to schedule a recording for the futureprogram, as described herein. One or more general-purpose orspecial-purpose computing systems may be used to implement televisionreceiver 122. Accordingly, various embodiments described herein may beimplemented in software, hardware, firmware, or in some combinationthereof. Television receiver 122 may include memory 830, one or morecentral processing units (CPUs) 844, display interface 846, other I/Ointerfaces 848, other computer-readable media 850, and networkconnections 852.

Memory 830 may include one or more various types of non-volatile and/orvolatile storage technologies. Examples of memory 830 may include, butare not limited to, flash memory, hard disk drives, optical drives,solid-state drives, various types of random access memory (RAM), varioustypes of read-only memory (ROM), other computer-readable storage media(also referred to as processor-readable storage media), or the like, orany combination thereof. Memory 830 may be utilized to storeinformation, including computer-readable instructions that are utilizedby CPU 844 to perform actions, including embodiments described herein.

Memory 830 may have stored thereon future program system 832, whichincludes future program detection module 834 and future programscheduler module 836. The future program detection module 834 may employembodiments described herein to analyze content, such as the Timed Textdata associated with a program-content data, to detect future programs.As described herein, a future program may be detected by extractinginformation from the content, such as the Timed Text data, whichidentifies a future program or when and what channel to record. Once afuture program is detected, the future program detection module 834generates a tag for the future program. The tag may be stored in otherdata 842 or other some other memory. The future program scheduler module836 may utilize the stored tag to periodically monitor an electronicprogram guide for a listing of the future program and record the programat the appropriate time and channel. In some embodiments, the futureprogram scheduler module 836, rather than the future program detectionmodule 834, may generate and store the tag for the detected futureprogram. Memory 830 may also store other programs 840 and other data842. For example, other data 842 may include a DVR or other recordingdevice for storing recorded content or recorded informational banners.

Display interface 846 is configured to provide content to a displaydevice, such as display device 124 in FIG. 1. Network connections 852are configured to communicate with other computing devices, such ascontent distributor 102, via communication network 110. Other I/Ointerfaces 848 may include a keyboard, audio interfaces, other videointerfaces, or the like. Other computer-readable media 850 may includeother types of stationary or removable computer-readable media, such asremovable flash drives, external hard drives, or the like.

Content distributor 102, content provider 104, information provider 106,and television receiver 122 may communicate via communication network110.

In some embodiments, content distributor 102 includes one or more servercomputer devices to detect future program and provide tags for thefuture programs to corresponding television receivers 122. These servercomputer devices include processors, memory, network connections, andother computing components that enable the server computer devices toperform actions as described herein.

The various embodiments described above can be combined to providefurther embodiments. All of the U.S. patents, U.S. patent applicationpublications, U.S. patent applications, foreign patents, foreign patentapplications and non-patent publications referred to in thisspecification and/or listed in the Application Data Sheet areincorporated herein by reference, in their entirety. Aspects of theembodiments can be modified, if necessary to employ concepts of thevarious patents, applications and publications to provide yet furtherembodiments.

These and other changes can be made to the embodiments in light of theabove-detailed description. In general, in the following claims, theterms used should not be construed to limit the claims to the specificembodiments disclosed in the specification and the claims, but should beconstrued to include all possible embodiments along with the full scopeof equivalents to which such claims are entitled. Accordingly, theclaims are not limited by the disclosure.

1. A method, comprising: receiving, at a server computer, content havinga program-content data stream and a Timed Text data stream; analyzingthe Timed Text data stream for future audiovisual programs that are tobe provided to users on a future date, the future date being on a datethat is beyond a most future date for any program then listed in anelectronic program guide provided to the users; detecting identificationdata for a future program to be provided on the future date from theanalysis of the Timed Text data stream; generating a tag that includesan identifier for the future program based on the identification data;selecting one or more of the users based on a comparison of attributesof the future program and viewing preferences of the users; providingthe tag to the selected users for storage on television receivers of theselected users to enable each corresponding television receiver toperiodically analyze the electronic program guide for a listing of thefuture program based on the stored tag and schedule a recording of thefuture program when the future program is listed in the electronicprogram guide.
 2. The method of claim 1, further comprising: receivingthe viewing preferences of the users from each of the users.
 3. Themethod of claim 1, further comprising: wherein the receiving of thecontent includes receiving content for a plurality of differentchannels, each content for each different channel having a separateprogram-content data stream and a separate Timed Text data stream; andwherein the analyzing of the Timed Text data stream includes analyzingeach separate Timed Text data stream for each of the plurality ofdifferent channels for future audiovisual programs that are to beprovided to the users.
 4. The method of claim 1, wherein generating thetag, further comprises: automatically generating the tag when theidentification data is detected without input from a user.
 5. The methodof claim 1 wherein the Timed Text data stream is separate from theprogram-content data stream.
 6. The method of claim 1, wherein theidentification data is the date, time, and channel indicating when thefuture program will be provided to the users.
 7. The method of claim 1,wherein the analyzing of the Timed Text data stream for future programsoccurs throughout receipt of the content.
 8. The method of claim 1,wherein the detecting of the future program is based on at least oneuser preference of at least one of the users that defines at least oneattribute of the future program.
 9. The method of claim 1, whereinproviding the tag to the selected users includes: providing, to a mobiledevice of each of the selected users, a notification that identifies thefuture program to a user, the notification including the tag to be sentfrom the mobile device to the corresponding television receiver uponselection by a corresponding user to schedule the recording of thefuture program.
 10. The method of claim 1, wherein providing the tag tothe selected users includes: providing, to the television receivers ofthe selected users, a notification that identifies the future programand includes the tag, the tag being stored by the corresponding receiverupon selection by a corresponding user to schedule the recording of thefuture program.
 11. The method of claim 1, further comprising at leastone of: analyzing metadata encapsulated with the program-content datastream for the identification data; analyzing an audio stream of theprogram content for the identification data; or employing characterrecognition on the program content to detect the identification data.12. A content distributor server computer, comprising: an input thatreceives program content and Timed Text data from a plurality of contentproviders for distribution to a plurality of users; a memory that storesat least instructions; and a processor that executes the instructionsto: analyze the Timed Text data for future audiovisual programs fromeach of the plurality of content providers; detect a future program fromthe analysis of the Timed Text data when the Timed Text data includesidentifying information for the future program; generate a tag thatincludes an identifier for the future program based on the identifyinginformation; and provide the tag to at least one of the plurality ofusers to utilize the tag to set a recording for the future program whenreceived.
 13. The content distributor server computer of claim 12,wherein the Timed Text data is scraped for the identifying information.14. The content distributor server computer of claim 12, wherein theprocessor further executes the instructions to: receive viewingpreferences of the plurality of users; and select the at least one ofthe plurality of users to provide the tag based on the viewingpreferences and at least one attribute of the future program.
 15. Thecontent distributor server computer of claim 12, wherein the tag isautomatically generated when the identifying information is detected inthe Timed Text data.
 16. The content distributor server computer ofclaim 12 wherein the Timed Text data is separate from theprogram-content data.
 17. The content distributor server computer ofclaim 12, wherein the processor executes further instructions to:provide, to a mobile device of each of the at least one of the pluralityof users, a notification that identifies the future program to a user,the tag being provided to a corresponding user upon selection by thecorresponding user to schedule the recording of the future program. 18.The content distributor server computer of claim 12, wherein theprocessor executes further instructions to: provide, to a correspondingtelevision receivers of each of the at least one of the plurality ofusers, a notification that identifies the future program and includesthe tag, the tag being stored by the corresponding receiver uponselection by a corresponding user to schedule the recording of thefuture program.
 19. A system, comprising: a content distributor a memorythat stores instructions; and a processor that executes the instructionsto: receive content for distribution to a plurality of televisionreceivers; analyze the content for future audiovisual programs that areto be provided to the plurality of television receivers on a futuredate, the future date being on a date that is after a most future datefor any program then listed in an electronic program guide provided tothe plurality of television receivers; detect a future program from theanalysis of the content when the content includes identifyinginformation for the future program; select one or more of the pluralityof television receivers based on viewing preferences of users of theplurality of television receivers; and provide the identifyinginformation to the selected television receivers; and a televisionreceiver of the plurality of television receivers that includes: amemory that stores other instructions; and a processor that executes theother instructions to: receive the identifying information from thecontent distributor; store the identifying information for the futureprogram in the memory; as the electronic program guide is updated overtime, periodically analyzing the electronic program guide for a listingof the future program based on the stored identifying information; andin response to the future program being listed in the electronic programguide, automatically scheduling a recording for the future program. 20.The system of claim 19, wherein the analysis of the content for futureprograms includes at least one of: analyze metadata encapsulated withprogram content for the identifying information; analyze Timed Text datathat accompanies the program content for the identifying information,wherein the Timed Text data is separate from the program content;analyze an audio stream of the program content for the identifyinginformation; or employ character recognition on the program content todetect the identifying information.